package com.lufei.message_system.Data.MbtiTypeDescriptionVD;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;

@Data
@Schema(name = "MBTI类型查询DTO", description = "用于查询MBTI类型描述的请求参数")
public class MbtiTypeDescriptionQueryDTO {

    @Pattern(regexp = "^(INTJ|INTP|ENTJ|ENTP|INFJ|INFP|ENFJ|ENFP|ISFJ|ISFP|ESFJ|ESFP|ISTJ|ISTP|ESTJ|ESTP)$",
            message = "MBTI类型必须是有效的16种MBTI类型之一")
    @Schema(description = "MBTI类型（支持精确查询或字母模糊查询）", example = "INTJ",
            allowableValues = {"INTJ", "INTP", "ENTJ", "ENTP", "INFJ", "INFP", "ENFJ", "ENFP", "ISFJ", "ISFP", "ESFJ", "ESFP", "ISTJ", "ISTP", "ESTJ", "ESTP"})
    private String mbtiType;

    @Pattern(regexp = "^(建筑师|逻辑学家|指挥官|辩论家|调停者|保护者|教育家|倡导者|守护者|艺术家|照顾者|表演者|检查者|巧匠|管理者|企业家)$",
            message = "类型名称必须是允许的16种类型之一")
    @Size(max = 50, message = "类型名称长度不能超过50个字符")
    @Schema(description = "类型名称（支持精确查询）", example = "建筑师",
            allowableValues = {"建筑师", "逻辑学家", "指挥官", "辩论家", "调停者", "保护者", "教育家", "倡导者", "守护者", "艺术家", "照顾者", "表演者", "检查者", "巧匠", "管理者", "企业家"})
    private String typeName;

    @Schema(description = "MBTI类型描述", example = "INTJ型的人独立、果断，擅长战略规划。")
    private String description;

    @Schema(description = "性格模型特点", example = "理性、冷静、目标导向")
    private String model;

    @Schema(description = "工作环境偏好", example = "喜欢独立工作，注重效率和逻辑性")
    private String workEnvironmentPreferences;

    @Schema(description = "潜在弱点", example = "可能过于固执，忽视他人感受")
    private String weakness;

    @Schema(description = "发展建议", example = "多倾听他人意见，增强灵活性")
    private String developmentSuggestions;

    @Schema(description = "适合领域", example = "科技、金融、管理")
    private String filed;

    @Schema(description = "适合职业", example = "工程师、CEO、科学家")
    private String career;

    @Schema(description = "创建时间", example = "2023-01-01T00:00:00")
    private Date createTime;

    @Schema(description = "更新时间", example = "2023-01-01T00:00:00")
    private Date updateTime;
}